package com.lovo.order.service;

import com.lovo.util.SysUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.net.http.WebSocket;
import java.util.Set;

@Service
@ServerEndpoint("/movieWebService")
@Slf4j
public class MovieWebService {
       private  static RedisTemplate<String,Object> redisTemplate;
     @Autowired
     public void redisTemplate(RedisTemplate<String,Object> redisTemplate){

         MovieWebService.redisTemplate=redisTemplate;
     }
    Session session;
     Object objNum=0;
    @OnOpen
    public void onOpen(Session session) {
         this.session=session;
    }
    /**
     * 链接关闭调用的方法
     */
    @OnClose
    public void onClose() {

    }
    /**
     * 收到客户端消息后调用的方法
     *
     * @param message
     */
    @OnMessage
    public void onMessage(String message) throws IOException, InterruptedException {
         log.info("前端发来的消息:"+message);
         while (true){
//             if(redisTemplate.hasKey(SysUtil.NOTIFY_KEY_S)){
//                 redisTemplate.opsForList().leftPop(SysUtil.NOTIFY_KEY_S);
//                 log.info("进入true");
//
//                 this.session.getBasicRemote().sendText("ok");
//             }
             Thread.sleep(1000);
             if(redisTemplate.hasKey(SysUtil.NOTIFY_KEY_NUM)){
              Object num=redisTemplate.opsForValue()
                      .get(SysUtil.NOTIFY_KEY_NUM_SUM);
              if(null!=num){
                  this.objNum=num;
              }
              this.session.getBasicRemote().sendText(String.valueOf(this.objNum));
             }else {
                 this.session.getBasicRemote().sendText("0");
             }

         }

    }

    /** 发送错误时的处理
     * @param session
     * @param error
     */
    @OnError
    public void onError(Session session, Throwable error) {


    }

}
